The present embodiments relate to three-dimensional (3D) rendering. In particular, computer assisted design (CAD) data is rendered.
Traditionally, 3D rendering requires powerful machines equipped with high-end graphics cards to visualize creations. 3D content is being used in more business-oriented applications where the typical user's machine is magnitudes less powerful.
Visualization and interaction for rendering CAD data relies on the CAD data being available on the local machine, either locally stored on the machine or completely downloaded to the local machine. Once downloaded, the local client is responsible for all rendering and most of the logic associated with the data. The server does no rendering, instead only serving the CAD data to the client. As a result, the CAD data is rendered with different experiences due to differences in the capabilities of the local machine.
For everyone to have similar 3D experiences regardless of the capabilities of their local hardware, rendering is performed by a server, and the rendered content is streamed to the client. In general, it is prohibitively expensive to maintain a 1:1 ratio between client and server, so a server multiplexes requests from multiple clients to generate the rendered data for each. The challenge lies in maintaining interactive frame rates while enduring the thrashing that occurs when different data is required for rendering for the different clients.